/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.service;


import com.comac.ins.common.mybatis.core.page.PageQuery;
import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdModelManagementCalculateFileBo;
import com.comac.ins.isfd.domain.vo.IsfdModelManagementCalculateFileDetailVo;
import com.comac.ins.isfd.domain.vo.IsfdModelManagementCalculateFileVo;
import jakarta.servlet.http.HttpServletResponse;

import java.util.Collection;
import java.util.List;

/**
 * 计算文件记录Service接口
 *
 * @author Lion Li
 * @date 2024-08-19
 */
public interface IIsfdModelManagementCalculateFileService {

    IsfdModelManagementCalculateFileVo queryById(Long id);

    /**
     * 获取计算文件记录详细信息 包括 已选择的零组件、必备件、边界条件和载荷文件
     */
    IsfdModelManagementCalculateFileDetailVo queryDetailVoById(Long id);

    /**
     * 分页查询计算文件记录列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 计算文件记录分页列表
     */
    TableDataInfo<IsfdModelManagementCalculateFileVo> queryPageList(IsfdModelManagementCalculateFileBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的计算文件记录列表
     *
     * @param bo 查询条件
     * @return 计算文件记录列表
     */
    List<IsfdModelManagementCalculateFileVo> queryList(IsfdModelManagementCalculateFileBo bo);

    /**
     * 新增计算文件记录  包括 已选择的零组件、必备件、边界条件和载荷文件
     *
     * @param bo 计算文件记录
     * @return 是否新增成功
     */
    Boolean insertByBo(IsfdModelManagementCalculateFileBo bo);

    /**
     * 修改计算文件记录
     *
     * @param bo 计算文件记录 只能修改 必备件、边界条件和载荷文件
     * @return 是否修改成功
     */
    Boolean updateByBo(IsfdModelManagementCalculateFileBo bo);

    /**
     * 校验并批量删除计算文件记录信息
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);


    /**
     * 根据task id查询计算文件操作记录
     */
    List<IsfdModelManagementCalculateFileVo> queryListByTaskId(Long taskId);

    /**
     * 计算文件BDF下载
     */
    void partAndCalculateBdfDownload(Long id, HttpServletResponse response);
}
